home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2001 May / may_2001.iso / intercd / root / Multimedia / ^DivX_Article / virtualdub / VirtualDub-source-1_4d / vdremote / vdremote.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-03-28  |  4.0 KB  |  136 lines

  1. #ifndef f_VDREMOTE_VDREMOTE_H
  2. #define f_VDREMOTE_VDREMOTE_H
  3.  
  4. #include <vfw.h>
  5.  
  6. #include "vdserver.h"
  7.  
  8. class CAVIFileRemote;
  9.  
  10. class CAVIFileRemote: public IAVIFile, public IPersistFile, public IClassFactory {
  11. private:
  12.     long m_refs;
  13.  
  14.     char *szPath;
  15.     IVDubServerLink *ivdsl;
  16.     BOOL fHasAudio;
  17.     BITMAPINFOHEADER *vFormat;
  18.     LONG vFormatLen, vSampleFirst, vSampleLast;
  19.     AVISTREAMINFO vStreamInfo;
  20.     WAVEFORMATEX *aFormat;
  21.     LONG aFormatLen, aSampleFirst, aSampleLast;
  22.     AVISTREAMINFO aStreamInfo;
  23.     PAVIFILE pafTunnel;
  24.  
  25.     CRITICAL_SECTION csPort;
  26.  
  27. public:
  28.     IVDubAnimConnection *ivdac;
  29.     static long gRefCnt;
  30.  
  31.     CAVIFileRemote(const CLSID& rclsid);
  32.     ~CAVIFileRemote();
  33.  
  34.     ////////////
  35.  
  36.     static HRESULT Create(const CLSID& rclsid, const IID& riid, void **ppv);
  37.     STDMETHODIMP QueryInterface(const IID& iid, void **ppv);
  38.     STDMETHODIMP_(ULONG) AddRef();
  39.     STDMETHODIMP_(ULONG) Release();
  40.  
  41.     ////////////
  42.  
  43.     STDMETHODIMP CreateInstance (LPUNKNOWN pUnkOuter, REFIID riid,  void * * ppvObj) ;
  44.     STDMETHODIMP LockServer (BOOL fLock) ;
  45.  
  46.     ////////////
  47.  
  48.     STDMETHODIMP GetClassID(LPCLSID lpClassID);
  49.  
  50.     STDMETHODIMP IsDirty();
  51.     STDMETHODIMP Load(LPCOLESTR lpszFileName, DWORD grfMode);
  52.     STDMETHODIMP Save(LPCOLESTR lpszFileName, BOOL fRemember);
  53.     STDMETHODIMP SaveCompleted(LPCOLESTR lpszFileName);
  54.     STDMETHODIMP GetCurFile(LPOLESTR *lplpszFileName);
  55.  
  56.     ////////////
  57.  
  58.     STDMETHODIMP CreateStream(PAVISTREAM *ppStream, AVISTREAMINFOW *psi);
  59.     STDMETHODIMP EndRecord();
  60.     STDMETHODIMP GetStream(PAVISTREAM *ppStream, DWORD fccType, LONG lParam);
  61.     STDMETHODIMP Info(AVIFILEINFOW *psi, LONG lSize);
  62.     STDMETHODIMP Open(LPCSTR szFile, UINT mode, LPCOLESTR lpszFileName);
  63.     STDMETHODIMP Save(LPCSTR szFile, AVICOMPRESSOPTIONS FAR *lpOptions,
  64.                 AVISAVECALLBACK lpfnCallback);
  65.     STDMETHODIMP ReadData(DWORD fcc, LPVOID lp, LONG *lpcb);
  66.     STDMETHODIMP WriteData(DWORD fcc, LPVOID lpBuffer, LONG cbBuffer);
  67.     STDMETHODIMP DeleteStream(DWORD fccType, LONG lParam);
  68.  
  69.     void LockPort();
  70.     void UnlockPort();
  71.  
  72. };
  73.  
  74. ///////////////////////////////////
  75.  
  76. class CAVIStreamRemote;
  77.  
  78. class CAVIStreamClassFactory: public IClassFactory {
  79. private:
  80.     CAVIStreamRemote *avifile;
  81.  
  82. public:
  83.     CAVIStreamClassFactory(CAVIStreamRemote *af);
  84.  
  85.     STDMETHODIMP QueryInterface (REFIID riid, void * * ppvObj) ;
  86.     STDMETHODIMP_(ULONG) AddRef();
  87.     STDMETHODIMP_(ULONG) Release();
  88.  
  89.     STDMETHODIMP CreateInstance (LPUNKNOWN pUnkOuter, REFIID riid,  void * * ppvObj) ;
  90.     STDMETHODIMP LockServer (BOOL fLock) ;
  91. };
  92.  
  93. class CAVIStreamRemote: public IAVIStream {
  94. private:
  95.     CAVIStreamClassFactory iclassfactory;
  96.  
  97.     long m_refs;
  98.  
  99.     CAVIFileRemote *parent;
  100.     AVISTREAMINFO *streamInfo;
  101.     WAVEFORMATEX *wfexFormat;
  102.     BITMAPINFOHEADER *bmihFormat;
  103.     LONG lFormatLen, lSampleFirst, lSampleLast;
  104.     BOOL fAudio;
  105.  
  106. public:
  107.     static long gRefCnt;
  108.  
  109.     static HRESULT Create(const CLSID& rclsid, const IID& riid, void **ppv);
  110.     STDMETHODIMP QueryInterface(const IID& iid, void **ppv);
  111.     STDMETHODIMP_(ULONG) AddRef();
  112.     STDMETHODIMP_(ULONG) Release();
  113.  
  114.     CAVIStreamRemote(const CLSID& rclsid, void **pUnknown);
  115.     CAVIStreamRemote(CAVIFileRemote *parentPtr, BOOL isAudio, AVISTREAMINFO *asi, void *format, long format_len, long sample_first, long sample_last);
  116.     ~CAVIStreamRemote();
  117.  
  118.     STDMETHODIMP Create(LONG lParam1, LONG lParam2);
  119.     STDMETHODIMP Delete(LONG lStart, LONG lSamples);
  120.     STDMETHODIMP_(LONG) Info(AVISTREAMINFOW *psi, LONG lSize);
  121.     STDMETHODIMP_(LONG) FindSample(LONG lPos, LONG lFlags);
  122.     STDMETHODIMP Read(LONG lStart, LONG lSamples, LPVOID lpBuffer, LONG cbBuffer, LONG *plBytes, LONG *plSamples);
  123.     STDMETHODIMP ReadData(DWORD fcc, LPVOID lp, LONG *lpcb);
  124.     STDMETHODIMP ReadFormat(LONG lPos, LPVOID lpFormat, LONG *lpcbFormat);
  125.     STDMETHODIMP SetFormat(LONG lPos, LPVOID lpFormat, LONG cbFormat);
  126.     STDMETHODIMP Write(LONG lStart, LONG lSamples, LPVOID lpBuffer,
  127.         LONG cbBuffer, DWORD dwFlags, LONG FAR *plSampWritten, 
  128.         LONG FAR *plBytesWritten);
  129.     STDMETHODIMP WriteData(DWORD fcc, LPVOID lpBuffer, LONG cbBuffer);
  130.     STDMETHODIMP SetInfo(AVISTREAMINFOW *psi, LONG lSize);
  131. };
  132.  
  133. #endif
  134.  
  135.  
  136.